home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / QD3DController.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  10.6 KB  |  352 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        QD3DController.h
  3.  
  4.      Contains:    Q3Controller methods    
  5.  
  6.      Version:    Technology:    Quickdraw 3D 1.6
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1995-1999 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QD3DCONTROLLER__
  18. #define __QD3DCONTROLLER__
  19.  
  20. #ifndef __QD3D__
  21.     #include <QD3D.h>
  22. #endif
  23.  
  24.  
  25.  
  26.  
  27. #if PRAGMA_ONCE
  28. #pragma once
  29. #endif
  30.  
  31. #ifdef __cplusplus
  32. extern "C" {
  33. #endif
  34.  
  35. #if PRAGMA_IMPORT
  36. #pragma import on
  37. #endif
  38.  
  39. #if PRAGMA_STRUCT_ALIGN
  40.     #pragma options align=power
  41. #elif PRAGMA_STRUCT_PACKPUSH
  42.     #pragma pack(push, 2)
  43. #elif PRAGMA_STRUCT_PACK
  44.     #pragma pack(2)
  45. #endif
  46.  
  47. #if PRAGMA_ENUM_ALWAYSINT
  48.     #pragma enumsalwaysint on
  49. #elif PRAGMA_ENUM_OPTIONS
  50.     #pragma option enum=int
  51. #elif PRAGMA_ENUM_PACK
  52.     #if __option(pack_enums)
  53.         #define PRAGMA_ENUM_PACK__QD3DCONTROLLER__
  54.     #endif
  55.     #pragma options(!pack_enums)
  56. #endif
  57.  
  58. /******************************************************************************
  59.  **                                                                             **
  60.  **                                Type Definitions                             **
  61.  **                                                                             **
  62.  *****************************************************************************/
  63. #define kQ3ControllerSetChannelMaxDataSize        256
  64. typedef CALLBACK_API_C( TQ3Status , TQ3ChannelGetMethod )(TQ3ControllerRef controllerRef, unsigned long channel, void *data, unsigned long *dataSize);
  65. typedef CALLBACK_API_C( TQ3Status , TQ3ChannelSetMethod )(TQ3ControllerRef controllerRef, unsigned long channel, const void *data, unsigned long dataSize);
  66.  
  67. struct TQ3ControllerData {
  68.     char *                            signature;
  69.     unsigned long                     valueCount;
  70.     unsigned long                     channelCount;
  71.     TQ3ChannelGetMethod             channelGetMethod;
  72.     TQ3ChannelSetMethod             channelSetMethod;
  73. };
  74. typedef struct TQ3ControllerData        TQ3ControllerData;
  75. /******************************************************************************
  76.  **                                                                             **
  77.  **                                     Routines                                 **
  78.  **                                                                             **
  79.  *****************************************************************************/
  80. EXTERN_API_C( TQ3Status )
  81. Q3Controller_GetListChanged        (TQ3Boolean *            listChanged,
  82.                                  unsigned long *        serialNumber);
  83.  
  84. EXTERN_API_C( TQ3Status )
  85. Q3Controller_Next                (TQ3ControllerRef         controllerRef,
  86.                                  TQ3ControllerRef *        nextControllerRef);
  87.  
  88. EXTERN_API_C( TQ3ControllerRef )
  89. Q3Controller_New                (const TQ3ControllerData * controllerData);
  90.  
  91. EXTERN_API_C( TQ3Status )
  92. Q3Controller_Decommission        (TQ3ControllerRef         controllerRef);
  93.  
  94. EXTERN_API_C( TQ3Status )
  95. Q3Controller_SetActivation        (TQ3ControllerRef         controllerRef,
  96.                                  TQ3Boolean             active);
  97.  
  98. EXTERN_API_C( TQ3Status )
  99. Q3Controller_GetActivation        (TQ3ControllerRef         controllerRef,
  100.                                  TQ3Boolean *            active);
  101.  
  102. EXTERN_API_C( TQ3Status )
  103. Q3Controller_GetSignature        (TQ3ControllerRef         controllerRef,
  104.                                  char *                    signature,
  105.                                  unsigned long             numChars);
  106.  
  107. EXTERN_API_C( TQ3Status )
  108. Q3Controller_SetChannel            (TQ3ControllerRef         controllerRef,
  109.                                  unsigned long             channel,
  110.                                  const void *            data,
  111.                                  unsigned long             dataSize);
  112.  
  113. EXTERN_API_C( TQ3Status )
  114. Q3Controller_GetChannel            (TQ3ControllerRef         controllerRef,
  115.                                  unsigned long             channel,
  116.                                  void *                    data,
  117.                                  unsigned long *        dataSize);
  118.  
  119. EXTERN_API_C( TQ3Status )
  120. Q3Controller_GetValueCount        (TQ3ControllerRef         controllerRef,
  121.                                  unsigned long *        valueCount);
  122.  
  123. EXTERN_API_C( TQ3Status )
  124. Q3Controller_SetTracker            (TQ3ControllerRef         controllerRef,
  125.                                  TQ3TrackerObject         tracker);
  126.  
  127. EXTERN_API_C( TQ3Status )
  128. Q3Controller_HasTracker            (TQ3ControllerRef         controllerRef,
  129.                                  TQ3Boolean *            hasTracker);
  130.  
  131. EXTERN_API_C( TQ3Status )
  132. Q3Controller_Track2DCursor        (TQ3ControllerRef         controllerRef,
  133.                                  TQ3Boolean *            track2DCursor);
  134.  
  135. EXTERN_API_C( TQ3Status )
  136. Q3Controller_Track3DCursor        (TQ3ControllerRef         controllerRef,
  137.                                  TQ3Boolean *            track3DCursor);
  138.  
  139. EXTERN_API_C( TQ3Status )
  140. Q3Controller_GetButtons            (TQ3ControllerRef         controllerRef,
  141.                                  unsigned long *        buttons);
  142.  
  143. EXTERN_API_C( TQ3Status )
  144. Q3Controller_SetButtons            (TQ3ControllerRef         controllerRef,
  145.                                  unsigned long             buttons);
  146.  
  147. EXTERN_API_C( TQ3Status )
  148. Q3Controller_GetTrackerPosition    (TQ3ControllerRef         controllerRef,
  149.                                  TQ3Point3D *            position);
  150.  
  151. EXTERN_API_C( TQ3Status )
  152. Q3Controller_SetTrackerPosition    (TQ3ControllerRef         controllerRef,
  153.                                  const TQ3Point3D *        position);
  154.  
  155. EXTERN_API_C( TQ3Status )
  156. Q3Controller_MoveTrackerPosition (TQ3ControllerRef         controllerRef,
  157.                                  const TQ3Vector3D *    delta);
  158.  
  159. EXTERN_API_C( TQ3Status )
  160. Q3Controller_GetTrackerOrientation (TQ3ControllerRef     controllerRef,
  161.                                  TQ3Quaternion *        orientation);
  162.  
  163. EXTERN_API_C( TQ3Status )
  164. Q3Controller_SetTrackerOrientation (TQ3ControllerRef     controllerRef,
  165.                                  const TQ3Quaternion *    orientation);
  166.  
  167. EXTERN_API_C( TQ3Status )
  168. Q3Controller_MoveTrackerOrientation (TQ3ControllerRef     controllerRef,
  169.                                  const TQ3Quaternion *    delta);
  170.  
  171. EXTERN_API_C( TQ3Status )
  172. Q3Controller_GetValues            (TQ3ControllerRef         controllerRef,
  173.                                  unsigned long             valueCount,
  174.                                  float *                values,
  175.                                  TQ3Boolean *            changed,
  176.                                  unsigned long *        serialNumber);
  177.  
  178. EXTERN_API_C( TQ3Status )
  179. Q3Controller_SetValues            (TQ3ControllerRef         controllerRef,
  180.                                  const float *            values,
  181.                                  unsigned long             valueCount);
  182.  
  183.  
  184. /******************************************************************************
  185.  **                                                                             **
  186.  **                                     Routines                                 **
  187.  **                                                                             **
  188.  *****************************************************************************/
  189. EXTERN_API_C( TQ3ControllerStateObject )
  190. Q3ControllerState_New            (TQ3ControllerRef         controllerRef);
  191.  
  192. EXTERN_API_C( TQ3Status )
  193. Q3ControllerState_SaveAndReset    (TQ3ControllerStateObject  controllerStateObject);
  194.  
  195. EXTERN_API_C( TQ3Status )
  196. Q3ControllerState_Restore        (TQ3ControllerStateObject  controllerStateObject);
  197.  
  198.  
  199. /******************************************************************************
  200.  **                                                                             **
  201.  **                                Type Definitions                             **
  202.  **                                                                             **
  203.  *****************************************************************************/
  204. typedef CALLBACK_API_C( TQ3Status , TQ3TrackerNotifyFunc )(TQ3TrackerObject trackerObject, TQ3ControllerRef controllerRef);
  205. /******************************************************************************
  206.  **                                                                             **
  207.  **                                     Routines                                 **
  208.  **                                                                             **
  209.  *****************************************************************************/
  210. EXTERN_API_C( TQ3TrackerObject )
  211. Q3Tracker_New                    (TQ3TrackerNotifyFunc     notifyFunc);
  212.  
  213. EXTERN_API_C( TQ3Status )
  214. Q3Tracker_SetNotifyThresholds    (TQ3TrackerObject         trackerObject,
  215.                                  float                     positionThresh,
  216.                                  float                     orientationThresh);
  217.  
  218. EXTERN_API_C( TQ3Status )
  219. Q3Tracker_GetNotifyThresholds    (TQ3TrackerObject         trackerObject,
  220.                                  float *                positionThresh,
  221.                                  float *                orientationThresh);
  222.  
  223. EXTERN_API_C( TQ3Status )
  224. Q3Tracker_SetActivation            (TQ3TrackerObject         trackerObject,
  225.                                  TQ3Boolean             active);
  226.  
  227. EXTERN_API_C( TQ3Status )
  228. Q3Tracker_GetActivation            (TQ3TrackerObject         trackerObject,
  229.                                  TQ3Boolean *            active);
  230.  
  231. EXTERN_API_C( TQ3Status )
  232. Q3Tracker_GetButtons            (TQ3TrackerObject         trackerObject,
  233.                                  unsigned long *        buttons);
  234.  
  235. EXTERN_API_C( TQ3Status )
  236. Q3Tracker_ChangeButtons            (TQ3TrackerObject         trackerObject,
  237.                                  TQ3ControllerRef         controllerRef,
  238.                                  unsigned long             buttons,
  239.                                  unsigned long             buttonMask);
  240.  
  241. EXTERN_API_C( TQ3Status )
  242. Q3Tracker_GetPosition            (TQ3TrackerObject         trackerObject,
  243.                                  TQ3Point3D *            position,
  244.                                  TQ3Vector3D *            delta,
  245.                                  TQ3Boolean *            changed,
  246.                                  unsigned long *        serialNumber);
  247.  
  248. EXTERN_API_C( TQ3Status )
  249. Q3Tracker_SetPosition            (TQ3TrackerObject         trackerObject,
  250.                                  TQ3ControllerRef         controllerRef,
  251.                                  const TQ3Point3D *        position);
  252.  
  253. EXTERN_API_C( TQ3Status )
  254. Q3Tracker_MovePosition            (TQ3TrackerObject         trackerObject,
  255.                                  TQ3ControllerRef         controllerRef,
  256.                                  const TQ3Vector3D *    delta);
  257.  
  258. EXTERN_API_C( TQ3Status )
  259. Q3Tracker_GetOrientation        (TQ3TrackerObject         trackerObject,
  260.                                  TQ3Quaternion *        orientation,
  261.                                  TQ3Quaternion *        delta,
  262.                                  TQ3Boolean *            changed,
  263.                                  unsigned long *        serialNumber);
  264.  
  265. EXTERN_API_C( TQ3Status )
  266. Q3Tracker_SetOrientation        (TQ3TrackerObject         trackerObject,
  267.                                  TQ3ControllerRef         controllerRef,
  268.                                  const TQ3Quaternion *    orientation);
  269.  
  270. EXTERN_API_C( TQ3Status )
  271. Q3Tracker_MoveOrientation        (TQ3TrackerObject         trackerObject,
  272.                                  TQ3ControllerRef         controllerRef,
  273.                                  const TQ3Quaternion *    delta);
  274.  
  275. EXTERN_API_C( TQ3Status )
  276. Q3Tracker_SetEventCoordinates    (TQ3TrackerObject         trackerObject,
  277.                                  unsigned long             timeStamp,
  278.                                  unsigned long             buttons,
  279.                                  const TQ3Point3D *        position,
  280.                                  const TQ3Quaternion *    orientation);
  281.  
  282. EXTERN_API_C( TQ3Status )
  283. Q3Tracker_GetEventCoordinates    (TQ3TrackerObject         trackerObject,
  284.                                  unsigned long             timeStamp,
  285.                                  unsigned long *        buttons,
  286.                                  TQ3Point3D *            position,
  287.                                  TQ3Quaternion *        orientation);
  288.  
  289. /******************************************************************************
  290.  **                                                                             **
  291.  **                                 Types                                         **
  292.  **                                                                             **
  293.  *****************************************************************************/
  294. typedef CALLBACK_API_C( void , TQ3CursorTrackerNotifyFunc )(void );
  295. /******************************************************************************
  296.  **                                                                             **
  297.  **                                 Routines                                     **
  298.  **                                                                             **
  299.  *****************************************************************************/
  300. EXTERN_API_C( TQ3Status )
  301. Q3CursorTracker_PrepareTracking    (void);
  302.  
  303. EXTERN_API_C( TQ3Status )
  304. Q3CursorTracker_SetTrackDeltas    (TQ3Boolean             trackDeltas);
  305.  
  306. EXTERN_API_C( TQ3Status )
  307. Q3CursorTracker_GetAndClearDeltas (float *                depth,
  308.                                  TQ3Quaternion *        orientation,
  309.                                  TQ3Boolean *            hasOrientation,
  310.                                  TQ3Boolean *            changed,
  311.                                  unsigned long *        serialNumber);
  312.  
  313. EXTERN_API_C( TQ3Status )
  314. Q3CursorTracker_SetNotifyFunc    (TQ3CursorTrackerNotifyFunc  notifyFunc);
  315.  
  316. EXTERN_API_C( TQ3Status )
  317. Q3CursorTracker_GetNotifyFunc    (TQ3CursorTrackerNotifyFunc * notifyFunc);
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324. #if PRAGMA_ENUM_ALWAYSINT
  325.     #pragma enumsalwaysint reset
  326. #elif PRAGMA_ENUM_OPTIONS
  327.     #pragma option enum=reset
  328. #elif defined(PRAGMA_ENUM_PACK__QD3DCONTROLLER__)
  329.     #pragma options(pack_enums)
  330. #endif
  331.  
  332. #if PRAGMA_STRUCT_ALIGN
  333.     #pragma options align=reset
  334. #elif PRAGMA_STRUCT_PACKPUSH
  335.     #pragma pack(pop)
  336. #elif PRAGMA_STRUCT_PACK
  337.     #pragma pack()
  338. #endif
  339.  
  340. #ifdef PRAGMA_IMPORT_OFF
  341. #pragma import off
  342. #elif PRAGMA_IMPORT
  343. #pragma import reset
  344. #endif
  345.  
  346. #ifdef __cplusplus
  347. }
  348. #endif
  349.  
  350. #endif /* __QD3DCONTROLLER__ */
  351.  
  352.